(load "tag-number.ss")
(load "define-put-get.ss")
(define (install-integer-package)
  (define (tag x)
    (attach-tag 'integer x))
  (put 'raise '(integer)
       (lambda (x) (make-rat x 1)))
  (put 'equ? '(integer integer)
       (lambda (x y) (tag (= x y))))
  (put '=zero? '(integer)
       (lambda (x) (tag (= x 0))))
  (put 'add '(integer integer)
       (lambda (x y) (tag (+ x y))))
  (put 'sub '(integer integer)
       (lambda (x y) (tag (- x y))))
  (put 'mul '(integer integer)
       (lambda (x y) (tag (* x y))))
  (put 'div '(integer integer)
       (lambda (x y) (tag (/ x y))))
  (put 'make 'integer
       (lambda (x) (tag x)))
  'done)

(define (make-integer n)
  ((get 'make 'integer) n))